/*
 * Copyright (C) 2021 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.xuexiang.xui_lib.component.dialog.interfaces;

import ohos.app.Context;

import com.xuexiang.xui_lib.component.dialog.config.ChooseBean;
import com.xuexiang.xui_lib.component.dialog.config.ConfigBean;

import java.util.ArrayList;

/**
 * description assignable
 *
 * @author liuluming
 * @since 2021-04-20
 */
public interface Assignable {

    /**
     * assignMdAlert
     *
     * @param context context
     * @param title title
     * @param msg alert dialog message
     * @param listener alert dialog ok cancle button click listener
     * @return ConfigBean
     */
    ConfigBean assignMdAlert(Context context, CharSequence title, CharSequence msg, final DialogListener listener);

    /**
     * assignTipAlert
     *
     * @param context context
     * @param title title
     * @param msg alert dialog message
     * @param submit
     * @param cancel
     * @param listener alert dialog ok cancle button click listener
     * @return ConfigBean
     */
    ConfigBean assignTipAlert(Context context, CharSequence title, CharSequence msg, String submit, String cancel, final DialogListener listener);

    ConfigBean assignTipImageAlert(Context context, CharSequence title, CharSequence msg, String submit, String cancel, final DialogListener listener);

    /**
     * assignMdIOSAlert
     *
     * @param context context
     * @param title title
     * @param msg alert dialog message
     * @param listener alert dialog ok cancle button click listener
     * @return ConfigBean
     */
    ConfigBean assignMdIOSAlert(Context context, CharSequence title, CharSequence msg, final DialogListener listener);

    /**
     * assignMdIOSAlertVertical
     *
     * @param context context
     * @param title title
     * @param msg alert dialog message
     * @param listener alert dialog ok cancle button click listener
     * @return ConfigBean
     */
    ConfigBean assignMdIOSAlertVertical(Context context, CharSequence title, CharSequence msg, final DialogListener listener);

    /**
     * assignMdSingleChoose
     *
     * @param context context
     * @param title title
     * @param list list
     * @param listener 单选按钮 item ok cancle button click listener
     * @return ConfigBean
     */
    ConfigBean assignMdSingleChoose(Context context, CharSequence title, ArrayList<ChooseBean> list,
                                    ItemDialogListener listener);

    ConfigBean assignMySingleChoose(Context context, CharSequence title, String submit, String cancel, ArrayList<ChooseBean> list,
                                    ItemDialogListener listener);

    /**
     * assignMdIOSSingleChoose
     *
     * @param context context
     * @param list list
     * @param listener 单选按钮 item ok cancle button click listener
     * @return ConfigBean
     */
    ConfigBean assignMdIOSSingleChoose(Context context, ArrayList<ChooseBean> list,
                                       ItemDialogListener listener);

    /**
     * assignMdIOSSingleMenuChoose
     *
     * @param context context
     * @param list list
     * @param x
     * @param y
     * @param menuWidth
     * @param menuHeight
     * @param listener 单选按钮 item ok cancle button click listener
     * @return ConfigBean
     */
    ConfigBean assignMdIOSSingleMenuChoose(Context context, ArrayList<ChooseBean> list, int x, int y, int menuWidth, int menuHeight,
                                           ItemDialogListener listener);

    /**
     * assignMdIOSBottomSingleChoose
     *
     * @param context context
     * @param list list
     * @param listener 单选按钮 item ok cancle button click listener
     * @return ConfigBean
     */
    ConfigBean assignMdIOSBottomSingleChoose(Context context, ArrayList<ChooseBean> list,
                                             ItemDialogListener listener);


    /**
     * assignMdIOSList
     *
     * @param context context
     * @param list list
     * @param listener 单选按钮 item ok cancle button click listener
     * @return ConfigBean
     */
    ConfigBean assignMdIOSList(Context context, ArrayList<ChooseBean> list,
                               ItemDialogListener listener);

    ConfigBean assignMdIMAGEList(Context context, ArrayList<ChooseBean> list,
                                 ItemDialogListener listener);

    ConfigBean assignMdIOSListOther(Context context, ArrayList<ChooseBean> list,
                                    ItemDialogListener listener);

    /**
     * assignMdMultiChoose
     *
     * @param context context
     * @param title title
     * @param list list
     * @param checkboxListener item ok cancle 的clicl listener
     * @return ConfigBean
     */
    ConfigBean assignMdMultiChoose(Context context, CharSequence title, ArrayList<ChooseBean> list,
                                   final CheckBoxItemDialogListener checkboxListener);

    /**
     * assignNormalInput
     *
     * @param context context
     * @param title title
     * @param hint1 TextFiled 的提示信息
     * @param listener ok  cancle click listener
     * @return ConfigBean
     */
    ConfigBean assignNormalInput(Context context, CharSequence title, CharSequence hint1,
                                 final DialogListener listener);

    ConfigBean assignCountInput(Context context, CharSequence title, CharSequence hint1,
                                final DialogListener listener);

    ConfigBean assignTwoInput(Context context, CharSequence title, CharSequence hint1, CharSequence hint2,
                              final DialogListener listener);

}
